package movepaint.view;

import java.awt.Dimension;
import javax.swing.*;
import java.awt.event.KeyEvent;
import movepaint.GestureRecognition;
import movepaint.listener.ToolBarOutilListener;
import movepaint.utils.Utilitaire;
import movepaint.view.menuComponents.JToggleButtonRaccourci;

/**
 * Classe qui affiche la barre d'outils de l'application.
 * @author Paulino A.
 * @version 1.0
 */
public class ToolBarOutils extends JToolBar {
 	// reference a la frame principale
 	private GestureRecognition _frameMain = null;

	// Identificateur pour chaque icone de la barre d'outils
	public static final int ID_SELECTIONNER_DEPLACER = 1;
	public static final int ID_CRAYON = 2;
	public static final int ID_ASSISTE = 3;

	// Texte pour chaque icone de la barre d'outils
	public static final String TEXT_SELECTIONNER_DEPLACER = "Selectionner/Deplacer";
	public static final String TEXT_CRAYON = "Crayon";
	public static final String TEXT_ASSISTE = "Assisté";

	// Nom des fichiers representant les icones
	public static final String ICON_SELECTIONNER_DEPLACER = "move.gif";
	public static final String ICON_CRAYON = "crayon.gif";
	public static final String ICON_ASSISTE = "assiste.gif";
	

	//	Tooltip pour chaque icone
	private static final String	TOOLTIP_SELECTIONNER_DEPLACER = "Selectionner/Deplacer une figure";
	private static final String	TOOLTIP_CRAYON = "Dessin libre";
	private static final String	TOOLTIP_ASSISTE = "Reconnaissance des gestes";
	
	// Boutons associes a la toolbar
	private JToggleButtonRaccourci _boutonSelectionnerDeplacer = null;
	private JToggleButtonRaccourci _boutonCrayon = null;
	private JToggleButtonRaccourci _boutonAssiste = null;

	/**
	 *	Constructeur qui crEer la barre d'outils
	 *
	 *	@param frameMain
	 *			Reference a la frame principale
	 **/ 
	public ToolBarOutils(GestureRecognition frameMain) {
        super("Outils", VERTICAL);
        
        // Reference a la frame principale
    	_frameMain = frameMain;

        setRollover(true);
        
		// On definit les parametres de la toolBar
		setFloatable(true);
		
		// On creer les composants
		createComponents();
		
		// On place les composants
		placeComponents();
		
		// On associe un ecouteur a chaque boutons
		_boutonSelectionnerDeplacer.addActionListener(new ToolBarOutilListener(this,_frameMain,ID_SELECTIONNER_DEPLACER));
		_boutonCrayon.addActionListener(new ToolBarOutilListener(this,_frameMain,ID_CRAYON));
		_boutonAssiste.addActionListener(new ToolBarOutilListener(this,_frameMain,ID_ASSISTE));
	}

	/**
	 *	Cette methode creer les composants de la fenetre
	 */
	private void createComponents() {
		// Bouton Selectionner deplacer
		_boutonSelectionnerDeplacer = new JToggleButtonRaccourci(
								Utilitaire.chargerImage(GestureRecognition.PATH_IMG+ICON_SELECTIONNER_DEPLACER),
								KeyEvent.VK_S,
                                TOOLTIP_SELECTIONNER_DEPLACER);

		// Bouton Crayon
		_boutonCrayon = new JToggleButtonRaccourci(
								Utilitaire.chargerImage(GestureRecognition.PATH_IMG+ICON_CRAYON),
								KeyEvent.VK_C,
								TOOLTIP_CRAYON);

		// Bouton Assite
		_boutonAssiste = new JToggleButtonRaccourci(
								Utilitaire.chargerImage(GestureRecognition.PATH_IMG+ICON_ASSISTE),
								KeyEvent.VK_R,
								TOOLTIP_ASSISTE);
        _boutonAssiste.setSelected(true);
	}

	/**
	 *	Cette methode place les composants de la fenetre
	 */
	private void placeComponents() {
        // On groupe les boutons
        ButtonGroup group = new ButtonGroup();
        group.add(_boutonSelectionnerDeplacer);
        group.add(_boutonCrayon);
        group.add(_boutonAssiste);
        
        // On ajoute les boutons a la toolbar
        add(_boutonSelectionnerDeplacer);
		add(_boutonCrayon);
        add(_boutonAssiste);

    }



    /**
     *	Methode qui retourne une reference au bouton associé a l'ID donné
     *		en argmument
     *
     *	@param idButton
     *			ID du bouton recherché
     *
     *	@return
     *			Référence du bouton recherché
     **/
     public JToggleButtonRaccourci getButton(int idButton) throws NullPointerException{
     	
     	// On retourne le bouton correspondant à l'id
     	if (idButton == ToolBarOutils.ID_SELECTIONNER_DEPLACER)
     		return _boutonSelectionnerDeplacer;
     	else if (idButton == ToolBarOutils.ID_CRAYON)
     		return _boutonCrayon;
        else if (idButton == ToolBarOutils.ID_ASSISTE)
            return _boutonAssiste;
     	else
            throw new NullPointerException("Le bouton " + idButton + " n'existe pas!!");
     }
}
